/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package Main;

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

/**
 *
 * @author luzanql
 */
class Registrarse extends JFrame implements ActionListener, ItemListener{

    private JLabel  lbNombre, lbLogin, lbContra, tituloImage,lbImagen;
    private JTextField tfNombre, tfLogin;
    private JCheckBox checkCambiarContra;
    private JPasswordField pfcontra;
    private JComboBox cbImagenes;
    private JButton botonRegistrarse, btnGuardar;
    private String[] stringImagenes;
    private JPanel panelCombo, panelA;
    private JFrame ventana;
    private Usuario user;
    private int rol;
    BDManagement manager= new BDManagement();;

    Container c;
    
    public Registrarse(int rol) {
        Registrarse(rol, false);

    }

    public Registrarse (Usuario user,int rol, boolean editar){
        Registrarse(rol, editar);
        this.user = user;
        
    }
    
    private void Registrarse(int rol,boolean editar){
        this.rol = rol;
        
        Image imagen=  new ImageIcon("Imagenes/galaxia_20-10-10.jpg").getImage();

        JPanelConFondo panelFondo = new JPanelConFondo(imagen);

        lbNombre = new JLabel("Nombre: ");
        lbNombre.setForeground(Color.white);
        lbContra = new JLabel("Contraseña: ");
        lbContra.setForeground(Color.white);

        lbLogin = new JLabel("Login: ");
        lbLogin.setForeground(Color.white);

        tfLogin = new JTextField(10);
        tfNombre = new JTextField(10);
        pfcontra = new JPasswordField(10);
        stringImagenes = new String[]{"Perfil_1", "Perfil_2", "Perfil_3", "Perfil_4", "Perfil_5", "Perfil_6",
                    "Perfil_7", "Perfil_8", "Perfil_9", "Perfil_10", "Perfil_11", "Perfil_12"};
        cbImagenes = new JComboBox(stringImagenes);
        cbImagenes.addActionListener(this);
        
        // para poner la imagen
        tituloImage = new JLabel("Escoga su imagen");
        tituloImage.setForeground(Color.ORANGE);
        lbImagen = new JLabel();

        lbImagen.setHorizontalAlignment(JLabel.CENTER);
        escogerImagen(stringImagenes[cbImagenes.getSelectedIndex()]);
        lbImagen.setOpaque(false);

        panelA = new JPanel(new GridLayout(4,2,4,4));
        panelA.setOpaque(false);
        panelA.add(lbNombre);
        panelA.add(tfNombre);
        panelA.add(lbLogin);
        panelA.add(tfLogin);
        panelA.add(lbContra);
        panelA.add(pfcontra);
        panelA.add(tituloImage);
        

        botonRegistrarse = new JButton("Crear Nuevo Jugador");
        botonRegistrarse.addActionListener(this);
        botonRegistrarse.setFocusPainted(false);
        botonRegistrarse.setContentAreaFilled(false);
        botonRegistrarse.setForeground(Color.white);
        
        checkCambiarContra = new JCheckBox("Cambiar Password");
        checkCambiarContra.setOpaque(false);
        checkCambiarContra.setForeground(Color.white);
        checkCambiarContra.addItemListener(this);
        
        btnGuardar = new JButton("Guardar Cambios");
        btnGuardar.addActionListener(this);
        btnGuardar.setFocusPainted(false);
        btnGuardar.setContentAreaFilled(false);
        btnGuardar.setForeground(Color.white);
        
        if (editar) {
            botonRegistrarse.setVisible(false);
            pfcontra.setEditable(false);
            panelA.add(checkCambiarContra);
        }
               
        panelCombo =  new JPanel();
        panelCombo.setLayout(new BorderLayout());
        panelCombo.setOpaque(false);
        panelCombo.setBackground(null);
        panelCombo.add(cbImagenes, BorderLayout.SOUTH);
        panelCombo.add(lbImagen, BorderLayout.NORTH);
        if(editar){
            //cbImagenes.select()
        }

        c = getContentPane();
        panelFondo.setLayout(new FlowLayout(10,35,10));
        panelFondo.add(panelA);
        panelFondo.add(panelCombo);
        panelFondo.add(botonRegistrarse);
        if(editar){
            panelFondo.add(btnGuardar);
        }

        c.add(panelFondo);
              
        setBounds(400, 150, 320, 370);
        setTitle("Registrarse");
        setUndecorated(true);
        getRootPane().setWindowDecorationStyle(JRootPane.PLAIN_DIALOG);
        setResizable(false);
        setVisible(true);
         addWindowListener(new WindowAdapter() {

            @Override
            public void windowClosing(WindowEvent we) {
                cerrar();
            }
        });
        
    }

    void cerrar() {
        ventana.setBounds(this.getX(), this.getY(), ventana.getWidth(), ventana.getHeight());
        ventana.setVisible(true);
    }
      void setVentanaPrincipal(JFrame ventana) {
        this.ventana = ventana;
    }

    private void escogerImagen(String name){
        
        ImageIcon icono = new ImageIcon ("Imagenes/Perfiles/"+name+".jpg");
        lbImagen.setIcon(new ImageIcon(icono.getImage().getScaledInstance(130, 130, Image.SCALE_DEFAULT)));
        lbImagen.setOpaque(false);

    }
    
    public void setDatosUsuario(Usuario user) {

        user.setLogin(tfLogin.getText());
        user.setPass(String.valueOf(pfcontra.getPassword()));
        user.setNombre(tfNombre.getText());
        user.setImagen(cbImagenes.getSelectedIndex());
        user.setRol(rol);
    }
    
     public void LlenarPerfil(Usuario u) {
        tfNombre.setText(u.getNombre());
        tfLogin.setText(u.getLogin());
        pfcontra.setText(u.getPass());
        escogerImagen(stringImagenes[u.getImagen()]);
    }

    public void actionPerformed(ActionEvent ae) {
        if(ae.getSource() == btnGuardar){
            AccesoDatosUsuario adu = new AccesoDatosUsuario();
            String login = user.getLogin();
            Usuario nuevoU = adu.ConsultarUsuario(login);
            setDatosUsuario(nuevoU);
            adu.Actualizar(nuevoU);
            
            this.dispose();
        }

        if (ae.getSource() == botonRegistrarse){

        if (tfNombre.getText().length() ==0||
            tfLogin.getText().length()==0||
            pfcontra.getPassword().length==0){
            JOptionPane.showMessageDialog(null,"Por favor llene todos los campos");
        }
       else{
            Usuario jugador = new Usuario();
            jugador.setNombre(tfNombre.getText());
            jugador.setLogin(tfLogin.getText());
            jugador.setPass(String.valueOf(pfcontra.getPassword()));
            jugador.setImagen(cbImagenes.getSelectedIndex());

            AccesoDatosUsuario acceso = new AccesoDatosUsuario();
            int columnasAfectadas = acceso.Insertar(jugador);

            if (columnasAfectadas >0){
            JOptionPane.showMessageDialog(null, "Jugador registrado exitosamente");
            this.cerrar();
            }
            if (columnasAfectadas == 0){
            JOptionPane.showMessageDialog(null,"Lo sentimos, ese Login ya ha sido registrado");
            }

            }
        }
        else{ 
            JComboBox cb = (JComboBox) ae.getSource();
            String imagenPerfil = (String)cb.getSelectedItem();
            escogerImagen(imagenPerfil);
        }
    }
    
    public void itemStateChanged(ItemEvent e) {

        Object source = e.getItemSelectable();

        if (source == checkCambiarContra) {
            if(checkCambiarContra.isSelected()){
                pfcontra.setEditable(true);
            }else{
                pfcontra.setEditable(false);
            }
        }
    }
}
